package com.cloud.api.domain.model;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "ModelType", description = "车型信息")
public class ModelType implements Serializable {

    @Schema(description = "主键")
    @NotEmpty(message = "{validation.common.id}")
    private String id;

    @Schema(description = "动力方式")
    @NotNull(message = "{validation.model.powerMode}")
    private Integer powerMode;

    @Schema(description = "电池类型")
    @NotNull(message = "{validation.model.batteryType}")
    private Integer batteryType;

    @Schema(description = "驱动电机额定转矩(N.m)")
    @NotEmpty(message = "{validation.model.driveMotorRatedTorque}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String driveMotorRatedTorque;

    @Schema(description = "驱动电机额定功率")
    @NotEmpty(message = "{validation.model.driveMotorRatedPower}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String driveMotorRatedPower;

    @Schema(description = "驱动电机冷却方式")
    @NotNull(message = "{validation.model.driveMotorCoolMethod}")
    private Integer driveMotorCoolMethod;

    @Schema(description = "驱动电机安装数量")
    @NotEmpty(message = "{validation.model.driveMotorInstallCount}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String driveMotorInstallCount;

    @Schema(description = "驱动电机额定转速(r/min)")
    @NotEmpty(message = "{validation.model.driveMotorRatedSpeed}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String driveMotorRatedSpeed;

    @Schema(description = "驱动电机布置形式/位置")
    @NotNull(message = "{validation.model.driveMotorDecorate}")
    private Integer driveMotorDecorate;

    @Schema(description = "整车供电电压(V)")
    @NotEmpty(message = "{validation.model.vehicleSupplyVoltage}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String vehicleSupplyVoltage;

    @Schema(description = "续航里程(km)")
    @NotEmpty(message = "{validation.model.mileage}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String mileage;

    @Schema(description = "最高车速(km/h)")
    @NotEmpty(message = "{validation.model.maxSpeed}")
    @Size(max = 30,message = "{validation.common.maxSize}")
    private String maxSpeed;

    @Schema(description = "车辆级别")
    private Integer vehicleLevel;

    @Schema(description = "通信协议")
    private Integer communicationProtocol;
}
